package practica1;

public class Cromosoma {
	private boolean [] genotipo;
	private double [] fenotipo;
	private double aptitud;
	private double aptitudDespl;
	private int edad;
	private int numCopias;
	
	public Cromosoma(boolean [] g, double[] f, double ap){
		setGenotipo(g);
		setFenotipo(f);
		setAptitud(ap);
		setAptitudDespl(ap);
		edad = 0;
		numCopias = 1;
	}

	public void aumentarCopias(){
		numCopias++;
	}
	
	public void resetCopias(){
		numCopias = 0;
	}
	
	public int getCopias(){
		return numCopias;
	}
	
	public void aumentarEdad(){
		edad++;
	}
	
	public int getEdad(){
		return edad;
	}
	
	public Cromosoma clone(){
		double[] f = new double[fenotipo.length];
		for (int i=0; i<fenotipo.length; i++) {
			f[i] = fenotipo[i];
		}
		Cromosoma c = new Cromosoma(genotipo,f,aptitud);
		c.setAptitudDespl(aptitudDespl);
		return c;
	}
	
	public boolean [] getGenotipo() {
		return genotipo;
	}

	public void setGenotipo(boolean [] genotipo) {
		this.genotipo = genotipo;
	}

	public double[] getFenotipo() {
		return fenotipo;
	}

	public String getFenoString() {
		String s = "";
		for (int i=0; i<fenotipo.length; i++) {
			//s += fenotipo[i] + " ";
			s += ((Math.floor(fenotipo[i]* 1000)/1000) +" ");
		}
		return s;
	}
	
	public void setFenotipo(double[] fenotipo) {
		this.fenotipo = fenotipo;
	}

	public double getAptitud() {
		return aptitud;
	}

	public double getAptitudDespl() {
		return aptitudDespl;
	}

	public void setAptitud(double aptitud) {
		this.aptitud = aptitud;
	}
	
	public void setAptitudDespl(double aptitudDespl) {
		this.aptitudDespl = aptitudDespl;
	}
	
	static public String toString (boolean [] x){
		String s="";
		for(int i=0;i<x.length;i++){
			if(x[i])
				s+="1";
			else
				s+="0";
		}
		return s;
	}
	
	
}



